As computers have become ubiquitous, people have increasingly begun to rely upon them as foundational tools, and as devices for communications, amusement, and entertainment devices. Indeed, computers perform many other functions and fill numerous other roles. The explosion of computer use is primarily due to the steep decrease in cost over the past several years. Miniaturization has also allowed computer processing power to be packaged in smaller and smaller spaces, thereby allowing users to become mobile. Users, therefore, demand that sophisticated applications be made available on smaller and smaller devices.
For example, a personal data assistant (PDA) is now available with a scaled-down operating system and is capable of executing application software heretofore only available on a traditional desktop computer. Even cellular telephones now boast data processing capability unimagined only a few year ago.
Historically, most computing was performed on central, mainframe computers having “dumb” (i.e., peripheral terminals having little if any resident computing capability) terminals attached thereto. The application software ran (i.e., was executed) on the mainframe and users interacted with that software from the attached terminals. The terminals were typically text based and communication between the terminals and the mainframe was generally by way of a serial communications protocol such as the well-known RS-232 protocol over dedicated cables. Communications speeds were limited, but that was not a significant hindrance, as textual communication typically requires only a limited communications bandwidth.
As computer applications software grew in sophistication and as graphical user interfaces (GUIs) became more prominent, the required communications bandwidth increased significantly. Fortunately, the cost of computer hardware had decreased to the point where it became possible to execute sophisticated software applications in situ on individual computers. Communications could, when necessary, be provided to transmit data to and receive data from a mainframe.
At the beginning of the 21st century, the vast majority of application software being executed was on stand-alone computing devices with linkage being provided to remote servers, typically via the Internet or other such networks.
However, the collision of smaller (e.g., hand-held), computing devices and the increasing hardware requirements demanded by ever more sophisticated application programs has again suggested a return to the concept of central execution of the application software with remotely deployed devices interconnected to a “mainframe”. Nowhere is this problem better illustrated than in current cellular telephone handsets. Current generation handsets have a graphical user interface implemented using a high resolution LCD or similar display. However, the demand for lightweight phones limits both the processing and storage capability available in the handset. Consequently, while current generation hardware devices may have sufficient processing power, they still are incapable of providing enough bulk storage to store modern application software. Consequently, it is highly desirable to store application software on a remote server and allow a local computing device (e.g., cellular handset or PDA functioning as a smart terminal) access thereto.